home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX Patches 1995 June
/
SGI IRIX Patches 1995 Jun.iso
/
5.3_patches
/
patchSG0000415
/
patchSG0000415.idb
/
usr
/
sbin
/
Add_disk.z
/
Add_disk
Wrap
Text File
|
1995-06-12
|
5KB
|
191 lines
#!/bin/sh
# Note that this script is limited to SCSI drives on integral controllers
# or raid5 scsi devices
# (that is, not the jaguar or cougar VME SCSI controllers) and defaults to
# controller 0.
# It makes the filesystem on partition 7 (appropriate for option drives),
# creates the mount directory, and an fstab entry for the drive, then mounts it.
CTLR=0 ID=2 LUN=0 # defaults
if [ $# -gt 3 ]
then
echo "Usage $0 [controller] [disk_number] [lun_number]"
exit 1
elif [ $# -eq 3 ]
then
CTLR="$1" ID="$2" LUN="$3"
elif [ $# -eq 2 ]
then
CTLR="$1" ID="$2"
elif [ $# -eq 1 ]
then
ID="$1"
fi
rootdisk="`devnm /|sed 's/[ ].*//`"
if [ $LUN -gt 0 ]
then
DS=dks${CTLR}d${ID}l${LUN}
else
DS=dks${CTLR}d${ID}
fi
DSK=/dev/dsk/${DS}s7
RDSK=/dev/rdsk/${DS}s7
if [ $LUN -gt 0 ]
then
MOUNTPT=/disk$CTLR$ID$LUN
else
MOUNTPT=/disk$CTLR$ID
fi
case "$rootdisk" {
*/dev/dsk/${DS}*)
echo You may not use this for the system disk, only option disks
exit 1
;;
}
if [ $LUN -gt 0 ]
then
hinv -c disk | grep -s "unit $ID, lun $LUN on SCSI controller $CTLR" > /dev/null 2>&1
d=$?
else
hinv -c disk | grep -s "unit $ID on SCSI controller $CTLR" > /dev/null 2>&1
d=$?
fi
hinv -c scsi | grep -s "Optical disk: unit $ID on SCSI controller $CTLR" > /dev/null 2>&1
o=$?
if [ $d -ne 0 -a $o -ne 0 ]
then
if [ $LUN -gt 0 ]
then
echo SCSI disk $ID with lun $LUN not found on controller $CTLR in
echo hardware inventory. If you are sure that you have the right SCSI
echo ID, be sure that the disk is attached and powered up when the
echo system is booted.
else
echo SCSI disk $ID not found on controller $CTLR in hardware inventory
echo If you are sure that you have the right SCSI ID, be sure that the
echo disk is attached and powered up when the system is booted.
fi
exit 1
fi
if [ ! -c /dev/rdsk/${DS}vh ]
then
if [ $LUN -gt 0 ]
then
echo "No volume header device (/dev/rdsk/${DS}vh) found, for disk $ID"
echo with lun $LUN on controller $CTLR. You may need to run the
echo following commands to create the device files:
else
echo "No volume header device (/dev/rdsk/${DS}vh) found, for disk $ID"
echo on controller $CTLR. You may need to run the following commands to
echo create the device files:
fi
echo "\tcd /dev; ./MAKEDEV disks"
exit 1
fi
if prtvtoc /dev/rdsk/${DS}vh > /dev/null 2>&1
then :
else
if [ $LUN -gt 0 ]
then
echo SCSI disk $ID with lun $LUN on controller $CTLR does not appear
echo to be initialized with a Silicon Graphics volume header. You may
echo need to use \"fx\" to initialize it.
else
echo SCSI disk $ID on controller $CTLR does not appear to be initialized
echo with a Silicon Graphics volume header. You may need to use
echo \"fx\" to initialize it.
fi
exit 1
fi
if [ $LUN -gt 0 ]
then
echo "\nAdding SCSI disk $ID with lun $LUN on controller $CTLR"
else
echo "\nAdding SCSI disk $ID on controller $CTLR"
fi
/etc/fsstat $DSK > /dev/null 2>&1
s7=$?
/etc/fsstat /dev/dsk/${DS}s6 > /dev/null 2>&1
s6=$?
/etc/fsstat /dev/dsk/${DS}s0 > /dev/null 2>&1
s0=$?
if [ $s7 -ne 3 -o $s6 -ne 3 -o $s0 -ne 3 ]
then
echo "\007SCSI disk $ID appears to have a valid filesystem, overwrite it? (n)\c"
read answer
case "$answer" {
y|Y|yes|Yes|YES) ;;
*)
if [ $LUN -gt 0 ]
then
echo Disk $ID with lun $LUN on controller $CTLR not added, previous data preserved
else
echo Disk $ID with lun $LUN on controller $CTLR not added, previous data preserved
fi
exit 1;;
}
fi
# unmount it by disk name, in case it is mounted on a different mount pt.
umount $DSK > /dev/null 2>&1
# make the new filesystem; raw device is much faster
mkfs $RDSK > /dev/null 2>&1
if [ $? -ne 0 ]
then
if [ $LUN -gt 0 ]
then
echo Unable to create a filesystem on SCSI disk $ID with lun $LUN on controller $CTLR
else
echo Unable to create a filesystem on SCSI disk $ID on controller $CTLR
fi
exit 1
fi
# create directory
if [ ! -d $MOUNTPT ]
then
rm -f $MOUNTPT
mkdir $MOUNTPT
if [ ! -d $MOUNTPT ]
then
echo Can not make mount directory $MOUNTPT; exit 1
fi
fi
# add the entry to /etc/fstab (ignore commented out lines!)
# make sure that the mount point matches also; if it was mounted
# as something else before, the 2nd mount attempt on next boot
# will at least print an error message
egrep -s "^$DSK[ ][ ]*$MOUNTPT[ ]" /etc/fstab > /dev/null 2>&1
if [ $? -ne 0 ]
then
echo "$DSK $MOUNTPT efs rw,raw=$RDSK 0 0" >> /etc/fstab
fi
sync
# label the disk with its directory name
if [ $LUN -gt 0 ]
then
labelit $RDSK disk$CTLR$ID$LUN sgi > /dev/null 2>&1
else
labelit $RDSK disk$CTLR$ID sgi > /dev/null 2>&1
fi
# mount the filesystem
if mount -v $MOUNTPT
then echo "\nNew disk ready to use as $MOUNTPT."; df -lik $MOUNTPT; exit 0
else echo "\007Failed to mount $DSK on $MOUNTPT"; exit 1
fi